package Base;

public class MyCircularQueue {
    int[] elem;
    int front;
    int rear;
    public MyCircularQueue(int k) {
        elem=new int[k];
    }

    //入队
    public boolean enQueue(int value) {
        if ( isFull() ){
            return false;
        }
        elem[rear]=value;
        rear=(rear+1) % elem.length;
        return true;
    }

    //出队
    public boolean deQueue() {
        if ( isEmpty() ){
            return false;
        }
        front=(front+1) % elem.length;
        return true;
    }

    public int Front() {
        if ( isEmpty() ){
            return -1;
        }
        return elem[front];
    }

    public int Rear() {
        if ( isEmpty() ){
            return -1;
        }
        return elem[(rear-1+elem.length) % elem.length];
    }

    public boolean isEmpty() {
        return rear==front;
    }

    public boolean isFull() {
        return (rear+1) % elem.length==front;
    }
}
